1.1 ב£ber Megamax Modula 1 ΓêÆ 1
________________________________________________________


1. Einfב¶hrung

Das erste Kapitel dieses Handbuchs soll Ihnen einen ב£berblick ב¶ber Megamax
Modula−2 und den Inhalt dieser Dokumentation geben. Wenn Sie Ihre System-
disketten gerade ausgepackt haben und den ersten Versuchen entgegenfiebern,
lesen Sie bitte auf jeden Fall Abschnitt 1.2. MבÀchten Sie sich erst ב¶ber ModulaΓêÆ2
und die Megamax−Implementation informieren, dann finden Sie hoffentlich das
ganze Kapitel 1 interessant.


1.1 ב£ber Megamax Modula

Modula−2 ist eine moderne Programmiersprache, in der Prof. Niklaus Wirth
das bewבñhrte Konzept von Pascal durch leistungsfבñhige Erweiterungen
ergבñnzte. Das Modulkonzept erlaubt die Realisierung und Pflege auch groבƒer
SoftwareProjekte; die Unterstב¶tzung von Prozessen und die MבÀglichkeiten der
maschinennahen Programmierung erschlieבƒen ModulaΓêÆ2 neue Anwendungs-
gebiete; eine systematische Syntax erleichtert das Erlernen der Sprache.

Megamax Modula ist eine moderne Implementation dieser Sprache: Der
schnelle EinΓêÆPassΓêÆCompiler ist zusammen mit Editor und Debugger ב¶ber eine
komfortable GEMΓêÆShell zu bedienen. Er hilft dem Anfבñnger beim problemlosen
Einstieg in ModulaΓêÆ2 und bietet dem KבÀnner ein leistungsfבñhiges Entwicklungs-
werkzeug. Der Compiler erfב¶llt nicht nur den vollen Standard nach Wirth (PIM,
3. Auflage) sondern verfב¶gt auch schon ב¶ber viele Erweiterungen des
kommenden ISOΓêÆStandards fב¶r ModulaΓêÆ2 (mehr dazu in Kap. 3.1! ). Er nutzt
den Mathe−Koprozessor (FPU) sowohl im Atari ST als auch im Atari TT.

Auf ב¶berholte Konzepte, wie z.B. separate AssemblerΓêÆ und Linkerlבñufe, wurde
verzichtet. Statt dessen unterstב¶tzt Megamax Modula durch echtes
Loadtime Linking der Module (wie auf der Modula−Maschine "Lilith" von
N. Wirth, bzw., viel besser!) die Benutzung groבƒer Modulbibliotheken. Die
mitgelieferte umfangreiche Systembibliothek (mehr als 110 Module) gewבñhrt
bereits umfassenden, komfortablen Zugriff auf alle Systemfunktionen Ihres
Atari ST/ TT (Dateisystem, BIOS, GEM) und viele zusבñtzliche MבÀglichkeiten.
Selbstverstבñndlich kבÀnnen Sie auch effiziente AccessoryΓêÆProgramme mit dem
optimierenden Linker erstellen.


Als Teil des Megamax Modula−Systems erhalten Sie weiterhin zwei Editoren
(einen GEM−Editor und einen sehr kompakten, schnellen Editor, der allerdings
etwas mehr EingewבÀhnung braucht), einen interaktiven ModulaΓêÆDebugger und
ein Resource Construction Program zur Definition von ResourceΓêÆDateien fב¶r
Ihre GEM−Anwendungen. Alle Komponenten arbeiten unter der Kontrolle der
GEMΓêÆBenutzeroberflבñche zusammen.

Eine ausfב¶hrlichere Diskussion der ΓêÆ vielleicht fב¶r Sie neuen ΓêÆ Konzepte der
Modularitבñt und des Loadtime Linking finden Sie im Kapitel 1.4.

1.2 ב£ber dieses Handbuch 1 ΓêÆ 2
________________________________________________________


1.2 ב£ber dieses Handbuch

Dieses Handbuch erklבñrt Ihnen den Umgang mit dem Megamax ModulaΓêÆ2
Entwicklungssystem. Das 1. Kapitel, in dem Sie gerade lesen, soll Ihnen einen
ersten ב£berblick ב¶ber die Sprache ModulaΓêÆ2 und das MegamaxΓêÆSystem geben.
Im 2. Kapitel finden Sie dann alle Erlבñuterungen zur Bedienung des Systems,
die Sie zum Programmieren in Modula brauchen. Gleich zu Beginn von Kapitel 2
erfahren Sie auch, wie Sie auf dem kב¶rzesten Weg zu Ihren ersten Experimen-
ten mit Megamax Modula kommen.

Als ModulaΓêÆProgrammierer wird Sie auבƒerdem das Kapitel 5 interessieren.
Dort wird die leistungsfבñhige Modulbibliothek beschrieben, die Sie mit Ihrem
Megamax ModulaΓêÆ2 erhalten haben. Schlieבƒlich sollten Sie sich einmal Kapitel
3.1 ansehen; dort wird verraten, welche Besonderheiten die Megamax−Implemen-
tation aufweist.

Die weiteren Kapitel dieses Buchs wenden sich vor allem an den fortgeschritten-
en Anwender. Wenn Sie sich der Systemprogrammierung mit Megamax Modula
zuwenden und dazu auch den integrierten Assembler verwenden wollen, finden
Sie in Kapitel 4 Informationen ב¶ber das 'Innenleben' Ihres ModulaΓêÆSystems und
den Umgang mit dem 68000 Assembler.

Im Anhang finden Sie vor allem Informationen zum Nachschlagen − interne
Datenformate, Fehlermeldungen, Compileroptionen... Auבƒerdem enthבñlt der
Anhang A.6 eine Erlבñuterung der BackusΓêÆNaurΓêÆNotation. Falls Sie diese Notation
zur Beschreibung der Modula−Syntax noch nicht kennen, sollten Sie sich diese
Seite bald ansehen.

Eines allerdings will dieses Handbuch nicht sein: Eine Einfב¶hrung in die
Programmiersprache ModulaΓêÆ2. Vielleicht haben Sie schon einiges ב¶ber Modula
gelesen? Dann kבÀnnen wir nur noch viel Spaבƒ beim Ausprobieren Ihrer
Kenntnisse mit dem Megamax ModulaΓêÆSystem wב¶nschen. Wenn Sie dagegen
noch nichts ב¶ber ModulaΓêÆ2 wissen, sollten Sie zusבñtzlich zu diesem Buch ein
Modula−Lehrbuch zur Hand haben. Im folgenden Abschnitt stellen wir eine
kleine Auswahl empfehlenswerter Bב¶cher vor.

1.3 Kurze Modula−Biliographie 1 − 3
________________________________________________________


1.3 Kurze Modula−Bibliographie

Wenn Sie Modula−2 erst lernen oder als Modula−Kenner noch ein Nachschlage-
werk suchen, sollten Sie sich das eine oder andere der folgenden Bב¶cher
einmal ansehen. Wבñhrend ModulaΓêÆ2 zunehmend Verbreitung findet, wבñchst
auch die Auswahl an ModulaΓêÆLiteratur stבñndig ΓêÆ unsere Vorschlagsliste kann
daher nicht vollstבñndig sein.


Niklaus Wirth: Programmieren in Modula−2

Springer Verlag, 3. Auflage

Das 'offizielle' Modula−Buch vom Vater der Sprache selbst. Es besteht aus
zwei Teilen: Der erste Abschnitt ist ein Programmierkurs, der alle Modula-
Konzepte vorstellt. Der Kurs ist auf Leser mit geringen Vorkenntnissen zuge-
schnitten; erfahrene Pascal−Programmierer werden sich in vielen Kapiteln
langweilen.

Daran schlieבƒt sich als zweiter Teil der 'ModulaΓêÆReport' an. Dort soll eine
vollstבñndige Definition der Sprache gegeben werden; die Darstellung ist allerdings
recht knapp und gibt Gelegenheit zu Miבƒverstבñndnissen. Zum Nachschlagen
eignet sich die deutsche ב£bersetzung des Buchs dank ihres umfangreichen
Stichwortverzeichnisses recht gut.

Es existiert auch noch eine vierte Auflage des Buchs, die jedoch von uns nicht
empfohlen werden kann. Sie enthבñlt veraltete Passagen aus der ersten Auflage
und widersprב¶chliche Beschreibungen zwischen den beiden Teilen. Wirth hat
hier auבƒerdem einige einschneidende Verבñnderungen an der Sprache
vorgenommen, die von den meisten Modula−Anbietern und −Anwendern nicht
mehr unterstב¶tzt werden. Mehr dazu im Kapitel 3.


Dal Cin/Lutz/Risse: Programmierung in Modula−2

Teubner Verlag, 2. Auflage 1986

Ein Lehrbuch, das in drei Teilen zunבñchst die Grundlage der Sprache vorstellt
und dann ausfב¶hrlich auf die neuen ModulaΓêÆKonzepte eingeht: modulare Program-
mierung und parallele Bearbeitung von Prozessen. Der eilige und Pascal−kundige
Leser findet zu Beginn der Grundlagen−Kapitel jeweils eine Zusammenfassung,
die die Unterschiede zu Pascal herausstellt.

Beispiele und Aufgaben helfen beim Lernen; in den spבñteren Kapiteln wird auch
anspruchsvolleres Wissen verstבñndlich dargestellt. Ein ausfב¶hrliches Stichwort-
verzeichnis macht das Buch auch zu einem guten Nachschlagewerk. Einige
Minuspunkte sollen aber nicht verschwiegen werden:

1.3 Kurze Modula−Biliographie 1 − 4
________________________________________________________


Die Berב¶cksichtigung der neuen ModulaΓêÆDefinition in der zweiten Auflage wurde
leider nicht konsequent durchgehalten ΓêÆ gelegentliche 'Rב¶ckfבñlle' in den alten
Standard, speziell in den Beispielen, sorgen fב¶r Verwirrung. Auבƒerdem sind
eine Reihe von Beispielen speziell auf das von den Autoren benutzte UNIX−System
zugeschnitten, ohne daבƒ das immer klar gesagt wird.


Richard Gleaves: Modula fב¶r PascalΓêÆProgrammierer

Springer Verlag 1985

Der Titel verrבñt bereits, an wen sich das Buch wendet: Programmierer mit
PascalΓêÆErfahrung, die auf ModulaΓêÆ2 umsteigen wollen und sich fב¶r בänderungen
und zusבñtzliche MבÀglichkeiten dieser Sprache interessieren.

Wenn Sie zu diesem Kreis gehבÀren, ist 'Modula fב¶r PascalΓêÆProgrammierer'
unbedingt empfehlenswert: Gleaves stellt die neuen Konzepte von Modula klar
heraus, ohne die Grundlagen zu wiederholen, die Ihnen von Pascal her gelבñufig
sind.

Einen kleinen Nachteil hat auch dieses Buch: Als einziges verschweigt es die
בänderungen des ModulaΓêÆStandards vבÀllig. Wenn Sie also von R. Gleaves Modula
lernen, sehen Sie sich bitte auch das Kapitel 3.1 des Megamax−Handbuchs an.


Stefan Dב¶rholt, Jochem Schnur: Atari ST ModulaΓêÆ2 Programmierhandbuch


Markt & Technik Verlag 1990


Dies ist ein ModulaΓêÆBuch speziell fב¶r Atari STΓêÆAnwender. Es umfaבƒt ca. 500
Seiten, enthבñlt zwei Disketten mit Quelltexten und Programmen, und alle
Beispielprogramme wurden mit dem Megamax−Modula−System erstellt. Die
Beispiele sind praxisnah, es enthבñlt Vergleiche der wichtigsten ModulaΓêÆSysteme
auf dem Atari ST und Informationen zum ISO−Standard, ein Kapitel zur
Assembler−Programmierung ist auch enthalten. Somit stellt dieses Werk eine
gute Ergבñnzung zu MegamaxΓêÆModula dar.


Es existiert noch ein weiteres Buch zu ModulaΓêÆ2 auf dem Atari ST. Es heiבƒt
"MODULA 2" (Heim Verlag 1990, Autor: R. Morgenstern). Wir kבÀnnen es Ihnen
nicht so sehr empfehlen. Es bietet trotz seiner Dicke lבñngst nicht den
Informationsgehalt des vorher genannten Werkes. Lediglich die Einfב¶hrung in
die Grundidee des Programmierens ist hier ausfב¶hrlicher. Am besten, sie
gehen in eine Buchhandlung und vergleichen beide Bב¶cher kurz. Der Unter-
schied wird Ihnen ins Auge springen!

1.3 Kurze Modula−Biliographie 1 − 5
________________________________________________________


Dieter u. Jב¶rgen Geiבƒ: Softwareentwicklung auf dem Atari ST


Hב¶thig Verlag 1986


ב£berraschung: Dies ist gar kein ModulaΓêÆBuch! Wo wir aber gerade bei den Li-
teraturtips sind, wollen wir nicht versבñumen, auf dieses Buch hinzuweisen.


Wer in die Programmierung des GEM einen tieferen Einblick gewinnen will, fin-
det hier die vollstבñndige Beschreibung aller Datenstrukturen und Routinen. Bei-
spiele erleichtern das Verstבñndnis dieser komplexen Benutzeroberflבñche.


Eine Einfב¶hrung in die GEMΓêÆProgrammierung, speziell mit den Module der Me-
gamax Bibliothek, finden Sie aber auch im Kapitel 5 dieses Handbuchs.


Dieter u. Jב¶rgen Geiבƒ: Vom Anfבñnger zum GEMΓêÆProfi


Hב¶thig Verlag 1990


Dies ist ein weiteres Buch der Autoren, das noch mehr Einblicke in die
GEM−Programmierung vermittelt. So wird beispielsweise gezeigt, wie
"saubere", portable GEM−Programmierung aussieht, damit die Programme auch
noch auf dem GEM des IBMΓêÆPC laufen, und wie Menב¶leisten auch in einzelnen
Fenstern (sehr praktisch fב¶r Accessories) dargestellt werden kבÀnnen. Auf
einer Diskette werden die gezeigten Routinen als Quelltext mitgeliefert (bisher
leider nur in der Sprache C).


Jankowski, Rabich, Reschke: Das Atari−ST Profibuch


Sybex Verlag


Dies ist ebenfalls kein ModulaΓêÆBuch. Aber was das vorige Buch fב¶r die
GEMΓêÆProgrammierung ist, stellt dieses fב¶r die systemnahe Programmierung
dar. Im deutschsprachigen Raum gilt es schlechthin als Referenz zu allem, das
Atari USA selbst festzulegen versבñumte. Fב¶r Programmierer, die den
Durchblick brauchen, ist dieses Buch unverzichtbar. Es dokumentiert alle
Systemvariablen und Betriebssystemaufrufe ausfב¶hrlich, bietet tiefe Einblicke in
die Hardware aller Atari ST−Modelle und ist immer up−to−date durch
regelmבñבƒige, korrigierte und erweiterte Neuauflagen. Zur Zeit umfaבƒt das Buch
ca. 1000 Seiten.

1.4 Megamax Modula: das Konzept 1 − 6
________________________________________________________


1.4 Megamax Modula: das Konzept


Definitions− und Implementationsmodule

Wenn Sie schon mal das Listing eines Modula−Programms gesehen haben, ist
Ihnen (als PascalΓêÆKenner?) vielleicht aufgefallen, daבƒ das Programm im Kopf
nicht als 'PROGRAM', sondern als 'MODULE' bezeichnet wird. Das ist offenbar
noch nicht besonders revolutionבñr und bestimmt nicht der Grund, warum die
ganze Sprache 'Modula' heiבƒt...

Interessanter sind da schon die folgenden Zeilen des Programms: Jede Menge
'IMPORT'−Anweisungen, mit denen Objekte aus anderen Modulen dem Compiler
bekanntgemacht werden. Diese anderen Module, die Objekte (Prozeduren,
Variablen, Typen, Konstanten) nach auבƒen zur Verfב¶gung stellen, gehorchen
besonderen Regeln − und die sind in Modula so konsequent und funktionell
ausgefallen wie bisher in keiner anderen Programmiersprache.

Zu jedem Modul, das Objekte nach auבƒen bereitstellt (sie 'exportiert'), gehבÀrt
ein spezielles Definitionsmodul. Darin werden exportierte Typen, Konstanten und
Variablen deklariert; bei exportierten Prozeduren wird aber nur der Prozedurkopf
mit den Parametern angegeben. Wenn der Compiler ein Programm ב¶bersetzt,
das diese Objekte benutzt ('importiert'), kann er mit Hilfe der Informationen
aus dem Definitionsmodul ב¶berprב¶fen, ob die importierten Objekte richtig
benutzt werden. Der Aufruf einer importierten Prozedur mit falschen Para-
metern, der in anderen Programmiersprachen mit 'behelfsmבñבƒigen' Bibliotheks-
systemen zu unerklבñrlichen Fehlfunktionen oder Abstב¶rzen fב¶hrt, kann also
schon beim Compilieren erkannt werden!

Das eigentliche Implementationsmodul, in dem die exportierten Prozeduren
ausprogrammiert sind, braucht der Compiler dagegen nicht zu kennen, um den
korrekten Aufruf zu ב¶berprב¶fen. Erst zur Ausfב¶hrung des Programms wird es
benבÀtigt. Insbesondere ist es erlaubt, die Implementation zu בñndern (Korrekturen
oder Optimierungen) − solange die Definition die gleiche bleibt, braucht das
Programm, das so eine Prozedur benutzt, nicht einmal neu ב¶bersetzt zu
werden.

1.4 Megamax Modula: das Konzept 1 − 7
________________________________________________________


Loadtime Linking

Wenn Sie Ihr Programm erfolgreich ב¶bersetzt haben, erwarten die ב¶blichen
CompilerΓêÆSysteme noch, daבƒ Sie einen sogenannten Linker starten. Dieser hat
die Aufgabe, die ב¶bersetzte Version Ihres Programmes mit den benutzten
Teilen der Bibliothek zu kombinieren. Der Linker erzeugt dann eine grבÀבƒere
Codedatei, die alle benבÀtigten Komponenten zusammen enthבñlt; das Programm
kann dann endlich ausgefב¶hrt werden.

Dieses gבñngige Verfahren hat Nachteile: Der Zyklus 'ב£bersetzen ΓêÆ Linken ΓêÆ
Ausprobieren ΓêÆ Korrigieren ΓêÆ ב£bersetzen ...' ist in der Entwicklungsphase recht
langwierig. Auבƒerdem enthבñlt jedes lauffבñhige Programm groבƒe Teile der Biblio-
thek als Kopie. Das belegt nicht nur unnבÀtig Speicherplatz auf der Diskette,
sondern fב¶hrt vor allem dann zu Problemen, wenn Sie Teile der Bibliothek
selbst entwickelt haben und weiterhin pflegen wollen: ב£bersetzte Programme
enthalten dann weiterhin alte (fehlerhafte?) Versionen der Bibliotheksmodule.

Megamax Modula bietet Ihnen daher ein anderes Verfahren: Erst direkt beim
Starten eines Moduls werden die zusבñtzlich benבÀtigten (importierten) Module
angebunden. Der Loader, der Bestandteil der Megamax−Shell ist, erledigt das
praktisch unmerklich und ohne von Ihnen weitere Angaben zu erfragen. Fב¶r die
meisten Anwenderprogramme sind (auבƒer dem Laden des Moduls selbst) keine
zusבñtzlichen Diskettenzugriffe erforderlich, um die importierten Module zu
laden: Alle wichtigen Ein−/Ausgabefunktionen und viele weitere Prozeduren sind
bereits als Teil der Shell im Hauptspeicher prבñsent und kבÀnnen von Ihrem
Modul mitbenutzt werden.

Der Entwicklungszyklus besteht in der Megamax Shell also nur aus 'ב£bersetzen
− Testen − Korrigieren'. Falls Sie Bibliotheksmodule nutzen, die nicht schon in
der Shell integriert sind, genב¶gt dem ModulaΓêÆSystem die IMPORTΓêÆAnweisung in
Ihrem Text, um auch diese Module beim Start des Hauptprogramms automatisch
nachzuladen und anzubinden. Und sogar wenn Sie ein Bibliotheksmodul בñndern
und neu ב¶bersetzen, kבÀnnen alle Programme, die dieses Modul importieren,
weiterhin direkt gestartet werden ΓêÆ ohne neue ב£bersetzung, ohne Linkerlauf.

1.4 Megamax Modula: das Konzept 1 − 8
________________________________________________________


Benutzung des Linkers

Nachdem wir eben ausfב¶hrlich ב¶ber Linker gelבñstert haben, mב¶ssen wir jetzt
gestehen, daבƒ wir fב¶r Megamax Modula auch einen haben. ב£ber seine Handha-
bung informiert Sie der Abschnitt 2.6 (dort werden Sie sehen, daבƒ unser Lin-
ker wenigstens viel freundlicher zu bedienen ist als die meisten seiner Kolle-
gen). Wozu er da ist, wollen wir aber jetzt schon erwבñhnen.

Der 'heimliche' Bindevorgang beim Laden ist eine Funktion der Megamax−Shell.
Wenn ein Programm direkt vom TOS oder GEM aus gestartet werden soll,
muבƒ es wohl oder ב¶bel alle benבÀtigten Prozeduren komplett enthalten. Dafב¶r
sorgt der Linker, den Sie aus der Shell aufrufen kבÀnnen.

Zur Entwicklung solcher Programme, die spבñter ohne Unterstב¶tzung durch die
Megamax−Umgebung laufen sollen, ist es aber trotzdem sinnvoll, die Vorteile
des 'Load Time Linking' zu nutzen. Erst das ausgetestete Programm sollten Sie
dann dem Linker vorsetzen. ב£brigens: Auch die Megamax ModulaΓêÆShell selbst
ist auf diese Weise ב¶bersetzt und gelinkt worden.

1.5 Unser Service: MeMoX 1 − 9
________________________________________________________


1.5 Unser Service

MeMoX − Megamax Modula Exchange


Was auf dem GEPARD anfing und von Application Systems Heidelberg fב¶r ihr
Megamax C (Laser C) aufgegriffen wurde, bieten wir nun auch fב¶r Megamax
Modula−2: Einen preiswerten und organisierten Austausch von Modula−2 Pro-
grammen und Module unserer Megamax−Anwender. Der Gedanke dabei ist, zu
verhindern, daבƒ jedes Hilfsmodul von jedem zweiten Anwender neu erfunden
werden muבƒ. Statt dessen hat jeder Programmierer die MבÀglichkeit, seine
Entwicklungen, die meist nebenbei angefallen sind, anderen zur Verfב¶gung zu
stellen. Auf diese Weise wבñchst ganz automatisch eine umfangreiche und
gב¶nstig zu erwerbende Bibliothek mit vielen nב¶tzlichen Funktionen heran.

Und so funktioniert's: Sie schicken uns (Application Systems) Ihre ΓêÆ mבÀglichst ΓêÆ
fehlerfreien und ausreichend dokumentierten Module im Quelltext. Sie erlauben
uns, diese Quellen auf einer unserer MeMoX−Disks an alle bei Application
Systems registrierten Modula−Anwender weiterzugeben (vermerken Sie dies
bitte auch am Anfang jedes Ihrer Quelltexte) − sie sind damit nicht Public
Domain; Sie haben als Urheber immer noch die MבÀglichkeit, Ihre Entwicklungen
spבñter kommerziell zu verbreiten. Sie ב¶bernehmen dabei keinerlei Verpflichtun-
gen. Als DankeschבÀn dב¶rfen Sie sich dann eine der vorhandenen MeMoXΓêÆ
Disketten aussuchen (den aktuellen Bestand kבÀnnen Sie bei ASH erfragen).

Daבƒ wir auf den Quelltexten bestehen, hat zwei Grב¶nde. Erstens sollen die
anderen Anwender die MבÀglichkeit haben, eventuelle Fehler zu beheben und ggf.
andere Modifikationen vorzunehmen. Zweitens kann es bei einem Update
unseres Systems dazu kommen, daבƒ sich einige Definitionen in den Moduln
(z.B. Runtime, InOut) verבñndern, was dann eine Neucompilierung vieler Module,
die Sie verwenden, erfordert. Die von uns gelieferten Module des Megamax−
Systems sind natב¶rlich schon auf dem neuesten Stand, die MeMoXΓêÆDisks
kבÀnnen wir jedoch nicht alle neu zusammenstellen, schon weil dann zwei
verschiedene Versionen fב¶r Anwender mit dem alten bzw. neuen System
existieren mב¶בƒten. Haben Sie als Anwender aber die Quellen der MeMoXΓêÆDisks,
kבÀnnen Sie selbst alle erforderlichen Compilationen vornehmen.

Wenn Sie an einer oder mehreren MeMoX−Disks Interesse haben, aber erstmal
nichts bieten kבÀnnen, erhalten Sie sie fב¶r DM 30.ΓêÆ das Stב¶ck. Teilen Sie uns
bei der Bestellung unbedingt Ihre Seriennummer mit!

Beispielsweise enthבñlt die zweite MeMoX Disk unter anderem:

AVLTrees einfache Verwaltung selbstausgleichender Binבñrbבñume,

Multitasking ModulaΓêÆProzeduren laufen im Hintergrund (ב¶ber Timer),

FormelΓêÆParser Auswertung von arithmetischen Ausdrב¶cken,

TextEdit automatische Verwaltung fב¶r Texteingaben in Fenstern,

Timer5ms Zeitbestimmung, Stoppuhr (AuflבÀsung: 5ms).

1.5 Unser Service: Mailbox 1 − 10
________________________________________________________


Mailbox

Einen weiteren Service kבÀnnen wir Ihnen bieten, wenn Sie ב¶ber einen
AkustikΓêÆKoppler oder ein Modem verfב¶gen: Sie kבÀnnen prompte Hilfe direkt von
den ModulaΓêÆEntwicklern erhalten. Auבƒerdem kבÀnnen Sie ב¶ber die Mailbox nicht
nur Megamax−spezifische Neuigkeiten erfahren, sondern auch an Diskussionen
ב¶ber zukב¶nftige Entwicklungen an MegamaxΓêÆModula und Modula allgemein
teilnehmen.

Dieses Forum fב¶r ModulaΓêÆProgrammierer, das wir selbst ins Leben gerufen
haben, fב¶hren wir schon ΓêÆ mit wechselnden Standorten ΓêÆ seit dem Frב¶hjahr
1988. Wir haben in dieser Zeit sehr oft Probleme von unseren Anwendern aus
der Welt schaffen kבÀnnen, oft wurden aufgetretene Fehler, die auch in unserer
Software nicht auszuschlieבƒen sind, innerhalb eines Tages behoben und
rב¶ckvermittelt. Mittlerweile ist es eine solide und sehr aktive DiskussionsΓêÆ und
Informationsrunde geworden, an der auch andere Modula−Hersteller verschie-
dener Computer beteiligt sind. Aufgrund der Datenflut haben sich sogar einige
ModulaΓêÆInteressenten wieder daraus zurב¶ckgezogen, weil sie sie nicht mehr
verfolgen oder die dabei entstehenden Telefonkosten tragen konnten.

Aus diesem Grund haben wir nun eine Alternative geschaffen. Sind Sie lediglich
an den besonderen Informationen zu Megamax Modula−2 interessiert oder
wollen Sie nur die Option auf gelegentliche Hilfestellungen in Anspruch nehmen,
bieten wir Ihnen diesen Service in einer bestimmten Mailbox. Zwar mב¶ssen Sie
dann unter Umstבñnden hבÀhere Kosten wegen der Ferngesprבñche tragen, da Sie
aber die Informationen gezielt abrufen kבÀnnen, minimiert sich damit der
Kostenaufwand.

Wollen Sie sich dagegen auch an allgemeinen ModulaΓêÆThemen beteiligen, kבÀnnen
Sie dazu verschiedene Mailboxen in ganz Europa anrufen.

So erreichen Sie nun die Mailbox mit den speziellen Megamax−Informationen
und der unverzב¶glichen Hilfe bei Problemen: Rufen Sie die der MAUSΓêÆMailboxen
an, deren Nummern Sie weiter unten finden. Ihr Terminal−Programm sollte auf
300, 1200 oder 2400 Baud, 1 StopΓêÆBit, keine Paritבñt, 8 Datenbits eingestellt
sein.

Wenn die Verbindung aufgebaut ist, meldet sich die Mailbox und fragt, ob Sie
eingetragener Benutzer sind. Antworten Sie mit N und tragen Sie sich dann,
wie die Box es Ihnen anbietet, als Benutzer ein. Diese Mailbox fragt Sie nach
allem, was Sie nicht selber wissen kבÀnnen, Sie sollten also auch als Anfבñnger
keine Probleme damit haben.

Wenn Sie sich eingetragen haben und sich im Hauptmenב¶ befinden, kבÀnnen Sie
uns schon erreichen: Drב¶cken Sie 'E', dann 'P', dann geben Sie als Adressaten
Thomas Tempelmann א†Klammeraffeא½ M ein (der "Klammeraffe" ist das Zeichen,
das Sie mit AltenateΓêÆב¶ erhalten). Daraufhin kבÀnnen Sie eine Nachricht

1.5 Unser Service: Mailbox und Soforthilfe bei Fehlern 1 − 11
________________________________________________________


eingeben. Teilen Sie uns mit, daבƒ Sie MegamaxΓêÆAnwender sind und ob Sie nur
eine Frage haben, ob Sie an den Megamax−spezifischen oder auch an allen
Modula−bezogenen Informationen Interesse haben. Beenden Sie die Texteingabe,
indem Sie eine Zeile mit einem Punkt am Anfang eingeben. Rufen Sie dann am
ב¶bernבñchsten Tag wieder an ΓêÆ dann sollten Sie schon eine Antwort erhalten
haben. Wir geben Ihnen dort auch gerne Hilfestellung, wenn Sie noch
allgemeine Probleme mit der Datenfernב¶bertragung und der MailboxΓêÆBedienung
haben. Sollte es aus unvorhersehbaren Grב¶nden nicht klappen, uns in der
Mailbox zu erreichen, wenden Sie sich bitte an Application Systems.

Nummern einiger MAUS−Boxen

Mב¶nchen 1 (089) 654708 (ist evtl. nicht zugבñnglich)

Mב¶nchen 2 (089) 8143547

Mב¶nchen 3 (089) 659769

Starnberg (08157) 7626

Bonn (0228) 254020

Aachen (0241) 154949

KבÀlnΓêÆPorz (02203) 12400

Mב¶nster (0251) 77261

Hamburg (040) 5381657 ... und das sind lבñngst nicht alle!

Wenn Sie erfahrener in der Mailbox−Szene sind, weisen wir Sie darauf hin,
daבƒ die allgemeinen ModulaΓêÆMitteilungen im FIDOΓêÆ und im MAUSΓêÆNetz, sowie
im MAUS−Brett der Zerberus−Boxen vertreten sind. Wenn Ihnen das nichts
sagt, sie aber trotzdem brennend daran interessiert sind, was damit gemeint
ist, rufen Sie doch ebenfalls einmal in der MAUS Mב¶nchen an und fragen Sie
uns danach, wie Sie diesem Forum von Ihrer Heimatstadt aus am gב¶nstigsten
folgen kבÀnnen.


Soforthilfe bei Fehlern im Megamax−System


Haben Sie Fragen oder Vorschlבñge zur Bedienung oder den Bibliotheken,
wenden Sie sich bitte schriftlich an den Vertrieb (Application Systems
Heidelberg). In besonders dringeden Fבñllen, beispielsweise, wenn Sie einen
Fehler im Compiler oder einer Bibliotheksfunktion vermuten und auf dessen
einwandfreies Funktionieren angewiesen sind, kבÀnnen Sie sich auch telefonisch
dort melden. Erklבñren Sie kurz die Dringlichkeit, dann werden Sie gegebenen-
falls die direkte Telefondurchwahl des zustבñndigen Programmierers erfahren.
Wir, die Programmierer werden uns bemב¶hen, solche Probleme dann
schleunigst aus dem Weg zu schaffen. Da wir das gesamte Megamax−System
selbst erstellt haben, ist uns die Hilfe in jedem Fall mבÀglich.

Auch in weniger dringenden Fבñllen bitten wir Sie, uns ב¶ber jede Macke am
System schriftlich Nachricht zu geben, denn es kam bereits vor, daבƒ auch
noch nach vier Jahren Fehler in bis dahin nicht verבñnderten Programmteilen
entdeckt wurden. Rechnen Sie also nicht damit, daבƒ der von Ihnen vermutete

1.5 Unser Service: Quelltexte und 68020−Assembler 1 − 12 ________________________________________________________


Fehler uns lבñngst bekannt sei ΓêÆ sonst wundern Sie sich beim nבñchsten Update
bitte nicht, daבƒ er immer noch vorhanden ist.


Es ist auch gut mבÀglich, daבƒ der Fehler bereits behoben wurde. In solch einem
Fall erhalten Sie gleich Nachricht und kבÀnnen ein Update erhalten:

Zu jeder Zeit kבÀnnen Sie alle Ihre Originaldisketten plus DM 20.ΓêÆ (Scheck oder
bar) an den Vertrieb einsenden, um das derzeit aktuelle System zu erhalten.
Nur, wenn sich grבÀבƒere בänderungen ergeben, ggf. sich auch das Handbuch
בñndert, informieren wir Sie automatisch ב¶ber ein "groבƒes" Update/Upgrade.


Quelltexte der Bibliotheken


Wenn Sie auf ein einwandfrei funktionierendes System angewiesen sind, wissen
Sie bereits, daבƒ wir Sie da nicht im Stich lassen. Wenn Sie dennoch darauf
Wert legen, zur Not selbst alles in der Hand zu haben, kבÀnnen Sie von uns die
Quellen aller Module, abgesehen vom Compiler, gegen eine Schutzgebב¶hr
erhalten. Wenden Sie sich dazu bitte schriftlich an unseren Vertrieb.



Assembler fב¶r 68020/30 und 68881/2 (FPU)


Der InlineΓêÆAssembler des MegamaxΓêÆCompilers ist fב¶r den Befehlsumfang eines
normalen Atari ST / Mega ST ausgelegt. Steckt in Ihrem Rechner eine
Erweiterungskarte mit einem 68020−Prozessor (auch 68030, 68040, ...) oder
sind Sie gar stolzer Besitzer eines Atari TT, kבÀnnen Sie von uns den Compiler
mit erweitertem InlineΓêÆAssembler fב¶r diesen Prozessor und seinen optionalen
Mathe−Koprozessor erhalten. Wenden Sie sich dazu bitte an den Vertrieb
(Application Systems Heidelberg).


Wenn Sie lediglich einen MatheΓêÆKoprozessor (FPU) fב¶r den normalen ST
besitzen, kבÀnnen wir Ihnen leider nicht mit einem speziellen Assembler dienen:
Die FPU kann nur in Verbindung mit einer 68020 (oder hבÀher) direkt
programmiert werden, beim ST mב¶ssen die MaschinenΓêÆInstruktionen ב¶ber
komplizierte Befehlsfolgen durch die 68000ΓêÆCPU ב¶bermittelt werden.


Glב¶cklicherweise haben wir im ModulaΓêÆCompiler die Verwendung der FPU im
ST sehr effektiv implementiert, sodaבƒ sowieso nur selten Optimierungen in
Assembler dienlich sind.


Wollen Sie die FPU im Atari ST trotzdem selber programmieren, empfehlen wir
Ihnen den FPU−Preprozessor, der Ihnen dazu viel Arbeit abnimmt. Wenden Sie
sich an:

Jens Decker

Frב¶hlingstr. 11

8721 RבÀthlein

1.5 Deren Service: Portable GEM−Bibliothek 1 − 13 ________________________________________________________


Portable Bibliotheken fב¶r den Atari ST/ TT


Wenn Sie sich mal unter den diversen Anbietern fב¶r Modula auf dem Atari
umsehen, werden Sie sicher schnell feststellen, daבƒ alles, was ב¶ber die sog.
Standard−Module bei Modula hinausgeht, die Idee der portablen Sprache
vollkommen aufgibt. Zwar wird der ISO−Standard viel mehr und bessere
Module festschreiben, rechnerspezifische Bibliotheken, wie die Atari−Funktionen
fב¶r GEMDOS und BIOS sowie das GEM, kבÀnnen dabei nicht berב¶cksichtigt
werden.


Ein langjבñhriger ModulaΓêÆProgrammierer auf dem Atari ST hat nun unbeirrt der
Interessen der einzelnen Modula−Anbieter eine Bibliothek erstellt, die alle
Funktionen des GEMDOS, BIOS, XBIOS und vor Allem des GEM umfaבƒt. Die
Namen der Bezeichner und die Parameter der Prozeduren wurden nach
Modula−Richtlinien sehr nah an der C−Definition von DRI und Atari angelehnt.
Die Funktionen rufen direkt die jeweiligen Betriebssystemfunktionen auf. Es gibt
also keine Sicherheitskontrollen, wie bei der MegamaxΓêÆBibliothek, dafב¶r sind
die Funktionen aber kompakter. Weitere Module bauen darauf auf, sie nennen
sich MagicDials. Darin sind beispielsweise enthalten: Dialoge, in denen die
KnבÀpfe mit Tastenkombinationen anwבñhlbar sind, Menב¶zeilen in Fenstern (z.B.
fב¶r Accessories) sowie die bekannten "fliegenden" Dialoge. Praktisch alles, was
die CΓêÆBibliothek zum Buch "Vom Anfבñnger zum GEMΓêÆProfi" enthבñlt und noch
einiges Praktische mehr!


Die Module sind fב¶r viele ModulaΓêÆSysteme auf dem Atari und evtl. bald auch
fב¶r IBM PCΓêÆKompatible verfב¶gbar. Wollen Sie portabel in GEM programmieren,
beispielsweise fב¶r VerבÀffentlichungen in Zeitschriften, kבÀnnen wir Ihnen diese
Bibliothek wבñrmstens empfehlen.


Die MAGIC−Library ist Shareware und Sie erhalten sie gegen Einsendung einer
doppelseitig formatierten Disk und dem Rב¶ckporto oder in unserer vorher
erwבñhnten Mailbox. Sie kבÀnnen die Software kostenlos ausprobieren und bei
Gefallen die fב¶r die Nutzung erforderliche Lizenzgebב¶hr von DM 15.ΓêÆ
nachzahlen. Fב¶r DM 40.ΓêÆ erhalten Sie sogar noch die zusבñtzlichen Module, wie
die erwבñhnten MagicDials. (Alle Module werden natב¶rlich im Quelltext geliefert!)
Vertrauensvolle Interessenten kבÀnnen das Geld natב¶rlich auch gleich beilegen.


Bei Interesse wenden Sie sich bitte direkt an den Autor:

Peter Hellinger
Brunnengasse 51
8500 Nב¶rnberg 1
Tel. (0911) 22 36 65

KtoΓêÆNr: 3009612026 bei KKBΓêÆDב¶sseldorf, BLZ 300 209 00


1.5 Deren Service: ADT & C−Linker 1 − 14 ________________________________________________________


ADT − Abstrakte Datentypen


INTEGER, CHAR, Records und Arrays sind fב¶r eine Sprache wie ModulaΓêÆ2
nicht genug. Auch Listen und Bבñume sind wichtige Datenstrukturen. Modula
bietet allerdings nur das NבÀtigste, um damit umzugehen. Die MegamaxΓêÆ
Bibliothek enthבñlt beispielsweise das Modul Lists, um beliebige Datenstrukturen
zu einer Liste zu verketten. Aber auch hier fehlen Funktionen, um die gesamte
Liste zu kopieren, abzuspeichern usw.

Die ADTΓêÆModulbibliothek geht hier bis zum letzten. Sie enthבñlt praktisch alle
Funktionen, um mit Listen, Binבñrbבñumen (auch AVL, also automatisch
ausgeglichenen), Hash−Tabellen, Stacks (LIFO) und Queues (FIFO) komfortabel
umzugehen. Die Daten werden nicht wie beim ListsΓêÆModul lediglich ב¶ber Pointer
verwaltet, sondern kבÀnnen komplett zugewiesen werden. Damit ist dann
beispielsweise das Kopieren (Zuweisen) kompletter Listen problemlos mבÀglich.
Fב¶r Geschwindigkeitsfanatiker gibt es aber auch immer die Option, beim
Einfב¶gen nur eine Referenz (also Adresse und Lבñnge) der Daten zu ב¶bergeben,
sodaבƒ das Kopieren des gesamten Datums dabei entfallen kann. Und ב¶berhaupt:
Alle Routinen sind sehr auf Effizienz und Geschwindigkeit bedacht.


Was noch? Beispielsweise gibt es eine automatische Markenverwaltung bei den
Listen ΓêÆ wenn Sie wissen, worum es geht. Natב¶rlich kבÀnnen alle Strukturen
miteinander verknב¶pft werden und DateiΓêÆEinΓêÆ/Ausgabe ist auch mit drin.
MegamaxΓêÆVerwבÀhnte werden auch die automatische Fehlerbehandlung zu
schבñtzen wissen. Drumherum gibt es noch einige BeispielΓêÆ und Hilfsmodule fב¶r
die Praxis. Und die Quelltexte aller Module gibt es auch − praktisch umsonst!

Also los! Bestellen Sie noch heute die ultimative ADT−Bibliothek bei

Wolfgang Keller

Karl−Hoffmann−Str. 8

7500 Karlsruhe 1

(0721) 386456



Einbindung von Funktionen der Sprache C

Sind Sie Multilinguist? Werden Sie mit der Sprache C − freiwillig oder eher
unfreiwillig − konfrontiert? Haben Sie Funktionen in C, die Sie nicht nach
ModulaΓêÆ2 umschreiben wollen/kבÀnnen? Dann lesen Sie, was Ihnen Michael
Seyfried (Autor des PD−Programms FuncCalc und einiger MeMoX− und
MM2ΓêÆBeitrבñge) Ihnen empfiehlt:

Fב¶r CΓêÆProgrammierer, die auf ModulaΓêÆ2 umsteigen wollen und fב¶r ModulaΓêÆ
Programmierer, die C−Programme einbinden wollen, gibt es als Zusatzprodukt
zu Megamax Modula−2 (MM2) und Turbo−C (TC) das Programm MM2CLink
(Megamax Modula−2 C−Linker). MM2CLink konvertiert Objektdateien vom


1.6 Anmerkungen zu den Lizenzvereinbarungen 1 − 15 ________________________________________________________


Borland− ins MM2−Format. Es kann aus einem oder mehreren C−Objektdateien
ein MM2ΓêÆModul erzeugen, das alle gewב¶nschten Variablen und Prozeduren der
C−Module exportiert um sie dann in MM2−Modulen importieren und benutzen
zu kבÀnnen. So kann die ganze TCΓêÆLaufzeitumgebung unter MM2 eingebunden
werden. Dabei ist im Gegensatz zu TC schon auf Objektcodeebene eine
Modularisierung mבÀglich: Aus TCSTDLIB.LIB und TCFLTLIB.LIB wird das
MM2−Modul TCSTDLIB und aus TC...LIB.LIB werden die MM2−Module TC...LIB.
Man braucht auch fב¶r die konvertierten CΓêÆModule keinen separaten Linkerlauf
sondern kann weiterhin das bequeme Loadtime−Linking nutzen. MM2CLink
bietet eine komfortable Unterstב¶tzung bei den einzelnen Schritten der
CΓêÆEinbindung. Es lבñuft in der MM2ΓêÆShell und benutzt deren Parameter mit:
Compiler, Editor und TC lassen sich direkt aus MM2CLink aufrufen.

Sie kבÀnnen das MM2CLinkΓêÆPaket fב¶r wenig Geld direkt beim Autor bestellen.
Ihre Kontaktadresse fב¶r Fragen und Bestellungen:

Michael Seyfried

Unterer Mauergarten 17

6520 Worms

(0631) 63158 oder (06241) 54671
Mailbox: MAUS Starnberg (STA), (08157) 7626




1.6 Anmerkungen zu den Lizenzverein-
barungen

Software

Die Disketten, auf denen Sie Megamax Modula erhalten haben, sind nicht
kopiergeschב¶tzt. Auf diese Weise mבÀchten wir unseren Kunden unnבÀtigen
בärger und Unbequemlichkeiten bei der Handhabung des Systems ersparen. Sie
dב¶rfen (und sollten) BackupΓêÆKopien fב¶r Ihren persבÀnlichen Gebrauch anlegen,
wie auch im Abschnitt 2.1 beschrieben wird.

Trotzdem unterliegt natב¶rlich auch Megamax Modula dem Urheberrecht: Sie
dב¶rfen nicht das komplette Programmpaket an Ihre fב¶nf besten Freunde weiter-
geben. Hier mבÀchten wir nicht nur darum bitten, unsere Entwicklungsarbeit
(und den Verzicht auf einen lבñstigen Kopierschutz) zu honorieren, sondern auch
noch kurz auf die Seriennummern hinweisen, die in der Software enthalten
sind. Jedes erworbene Modula−System darf zu jedem Zeitpunkt nur auf einem
einzelnen Rechner verwendet werden.

Wenn Sie mit dem Megamax−System Software entwickelt haben und diese
verkaufen (oder verschenken) wollen, mבÀchten wir Ihnen natב¶rlich nicht im
Wege stehen (und wir mבÀchten auch keine Lizenzgebב¶hren von Ihnen haben).
Daher gilt folgende Regelung:

1.6 Anmerkungen zu den Lizenzvereinbarungen 1 − 16
________________________________________________________


* Von Ihnen unter Megamax Modula entwickelte Programme dב¶rfen uneinge-
schrבñnkt weitergegeben werden. Das gilt ebenso fב¶r die CodeΓêÆModuln unserer
Library, nicht jedoch fב¶r deren zugehבÀrige Quelltexte.

* Die Textversionen der Definitionsmodule unserer Library dב¶rfen Sie auch
gerne verbreiten ΓêÆ wir hoffen, daבƒ jeder Leser dann auch sofort so eine
Programmierumgebung haben will...

* NICHT weitergeben dב¶rfen Sie alle ב¶brigen Bestandteile des ModulaΓêÆSystems.

* In Zweifelsfבñllen erkundigen Sie sich bitte bei Application Systems Heidelberg.



Handbuch

Das vorliegende Handbuch darf, auch auszugsweise, nicht kopiert werden;
weder durch mechanische, optische, magnetische, elektronische noch chemische
Reproduktionsverfahren. (Fבñllt Ihnen noch ein anderes Verfahren ein? Bitte
auch nicht verwenden!) Ausnahmen bedב¶rfen der schriftlichen Genehmigung
durch Application Systems Heidelberg.


Haftungsausschluבƒ


Bitte nehmen Sie zur Kenntnis, daבƒ wir, die Autoren, dieses Produkt mit
groבƒer Sorgfalt entwickelt und getestet haben. Dennoch kבÀnnen uns dabei
Fehler unterlaufen sein. Jedoch kבÀnnen weder wir noch unser Vertrieb fב¶r
Fehler im Handbuch und in der Software eine Haftung ב¶bernehmen, insbeson-
dere fב¶r Folgeschבñden bei Dritten, die von der mit diesem Produkt erstellten
Software ausgehen.


Das bedeutet, daבƒ Sie Ihre selbst entwickelte Software inklusive der
eingebundenen MegamaxΓêÆBibliothek angemessen testen mב¶ssen, wenn Sie sie
Dritten gegenב¶ber zugבñnglich machen, weil wir dort zu keinerlei Gewבñhrleistung
mehr verpflichtet sind.